Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Commit c10c465c0231f29536e66fa1c3713eb064ea71ea


Parents : 9bc7381
Author : Mark Qvist <bc7291552be7a58f361522990465165c>
Signature : T66BB85Valid, signed by author
Date : 2026-07-22T20:01:50+02:00

Interface gravity base property and configuration

Changes

3 files changed, 12 insertions(+), 2 deletions(-)


Diff

diff --git a/RNS/Interfaces/Interface.py b/RNS/Interfaces/Interface.py
index 34f228518..e0f849379 100755
--- a/RNS/Interfaces/Interface.py
+++ b/RNS/Interfaces/Interface.py
@@ -98,6 +98,7 @@ class Interface:
def __init__(self):
self.rxb = 0
self.txb = 0
+ self.gravity = 0
self.created = time.time()
self.detached = False
self.online = False

diff --git a/RNS/Reticulum.py b/RNS/Reticulum.py
index a53d1a7f0..0c1967160 100755
--- a/RNS/Reticulum.py
+++ b/RNS/Reticulum.py
@@ -758,6 +758,9 @@ class Reticulum:
elif c["mode"] == "internal":
interface_mode = Interface.Interface.MODE_INTERNAL
+ gravity = None
+ if "gravity" in c: gravity = c.as_int("gravity")
+
ifac_size = None
if "ifac_size" in c:
if c.as_int("ifac_size") >= Reticulum.IFAC_MIN_SIZE*8: ifac_size = c.as_int("ifac_size")//8
@@ -895,6 +898,7 @@ class Reticulum:
else: interface.OUT = True
interface.mode = interface_mode
+ interface.gravity = gravity
interface.announce_cap = announce_cap
interface.bootstrap_only = bootstrap_only
if configured_bitrate: interface.bitrate = configured_bitrate
@@ -1075,15 +1079,17 @@ class Reticulum:
RNS.trace_exception(e)
RNS.panic()
- def _add_interface(self, interface, mode = None, configured_bitrate=None, ifac_size=None, ifac_netname=None, ifac_netkey=None,
+ def _add_interface(self, interface, mode=None, gravity=None, configured_bitrate=None, ifac_size=None, ifac_netname=None, ifac_netkey=None,
announce_cap=None, announce_rate_target=None, announce_rate_grace=None, announce_rate_penalty=None,
bootstrap_only=False, recursive_prs=False, announces_from_internal=True, announces_to_internal=None):
if not self.is_connected_to_shared_instance:
if interface != None and issubclass(type(interface), RNS.Interfaces.Interface.Interface):
- if mode == None: mode = Interface.Interface.MODE_FULL
+ if mode == None: mode = Interface.Interface.MODE_FULL
+ if gravity == None: gravity = 0
interface.mode = mode
+ interface.gravity = gravity
interface.OUT = True
if configured_bitrate: interface.bitrate = configured_bitrate
@@ -1467,6 +1473,7 @@ class Reticulum:
ifstats["pr_burst_activated"] = interface.ic_pr_burst_activated
ifstats["status"] = interface.online
ifstats["mode"] = interface.mode
+ ifstats["gravity"] = interface.gravity
ifstats["announces_to_internal"] = interface.announces_to_internal
interfaces.append(ifstats)

diff --git a/RNS/Utilities/rnstatus.py b/RNS/Utilities/rnstatus.py
index 0a0370560..e25eb9411 100644
--- a/RNS/Utilities/rnstatus.py
+++ b/RNS/Utilities/rnstatus.py
@@ -418,6 +418,8 @@ def program_setup(configdir, dispall=False, verbosity=0, name_filter=None, json=
if ifstat["status"]: ss = "Up"
else: ss = "Down"
+ if "gravity" in ifstat and ifstat["gravity"]: ss += ", gravity "+str(ifstat["gravity"])
+
if ifstat["mode"] == RNS.Interfaces.Interface.Interface.MODE_ACCESS_POINT: modestr = "Access Point"
elif ifstat["mode"] == RNS.Interfaces.Interface.Interface.MODE_POINT_TO_POINT: modestr = "Point-to-Point"
elif ifstat["mode"] == RNS.Interfaces.Interface.Interface.MODE_ROAMING: modestr = "Roaming"


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────